From d06f8cb1eec2d8b7f99eb9b20c76c67e06dea599 Mon Sep 17 00:00:00 2001 From: oliskoli Date: Sun, 11 Jun 2006 15:42:24 +0000 Subject: [PATCH] Add a new cross-format waypoint check 'testw'. --- testw | 166 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 166 insertions(+) create mode 100755 testw diff --git a/testw b/testw new file mode 100755 index 000000000..d41a6ef86 --- /dev/null +++ b/testw @@ -0,0 +1,166 @@ +#!/bin/sh + +### cross format waypoint check ### + +PNAME=${PNAME:-./gpsbabel} +REFGPX="reference/expertgps.gpx" # reference file for all tests +EXCL="ozi vitosmt" # exclude formats from test +CAPS="" +TEMPDIR=/tmp/gb-testw +CATALOG=/tmp/gb-testw.done +LOGFILE=/tmp/gb-testw.log + +# options +vg=0 +prep=0 + +function log_entry() +{ + touch $LOGFILE + echo "-----------------------------------------------------------------------" >> ${LOGFILE} + date >> ${LOGFILE} + echo "$*" >> ${LOGFILE} +} + +function try_run() # command line +{ + local CMD="$*" + local RES=0 + + [ $vg -ne 0 ] && CMD="valgrind -q $CMD" + + ${CMD} > $TEMPDIR/.result 2>&1 + RES=$? + if [ $RES -ne 0 -o -s $TEMPDIR/.result ]; then + if [ $RES -ne 0 ]; then + echo " -- Uhps --" + echo "-----------------------------------------------------------------------" + test -s $TEMPDIR/.result && cat $TEMPDIR/.result + echo "-----------------------------------------------------------------------" + else + echo "" + fi + log_entry "cmd($RES): $CMD" + test -s $TEMPDIR/.result && cat $TEMPDIR/.result >> ${LOGFILE} + return 1 + else + return 0 + fi +} + +function STAGE_1 () # format +{ + local FMT=$1 + local CMD1 CMD2 + + echo "$CAPS" | + + while read type caps format comment; do + + for i in $EXCL; do + if [ "$format" == "$i" ]; then + caps="------" + fi + done + + grep "$FMT & $format" ${CATALOG} > /dev/null && continue + + echo -n "testing \"$FMT\" with \"$format\" " + + case $caps in + + -w*) + echo -n "*" + CMD1="${PNAME} -i $FMT -f $TEMPDIR/$FMT -o $format -F $TEMPDIR/$FMT.$format" + try_run "${CMD1}" || continue + ;; + + rw*) + echo -n "*" + CMD1="${PNAME} -i $FMT -f $TEMPDIR/$FMT -o $format -F $TEMPDIR/$FMT.$format" + try_run "${CMD1}" || continue + echo -n "*" + CMD2="${PNAME} -i $format -f $TEMPDIR/$FMT.$format -o $FMT -F $TEMPDIR/$FMT.$format.$FMT" + try_run "${CMD2}" || continue + ;; + esac + echo "*" + echo "$FMT & $format" >> $CATALOG + done + return 0 +} + +function STAGE_0 () +{ + echo "$CAPS" | + + while read type caps format comment; do + + for i in $EXCL; do + if [ "$format" == "$i" ]; then + caps="------" + fi + done + + case $caps in + rw*) + CMD="${PNAME} -i gpx -f $REFGPX -x nuketypes,routes,tracks -o $format -F $TEMPDIR/$format" + try_run "${CMD}" || continue + STAGE_1 $format || exit 1 + ;; + esac + case $caps in + -w*) + CMD="${PNAME} -i gpx -f $REFGPX -x nuketypes,routes,tracks -o $format -F $TEMPDIR/$format" + try_run "${CMD}" || continue + ;; + esac + done + rm -f $TEMPDIR/.result +} + +rm -rf $TEMPDIR > /dev/null +mkdir -p $TEMPDIR > /dev/null + +while [ $# -gt 0 ]; do + case $1 in + -s|--start) # remove catalog. run the full test. + rm -f $CATALOG + ;; + -v|--valgrind) + vg=1 + ;; + -p|--prepare) # prepare for valgrind check. + prep=1 + ;; + -c|--clean) + trap "rm -fr $TEMPDIR; exit 1" 0 1 2 3 15 + ;; + -r|--reference) + shift + REFGPX=$1 + ;; + esac + shift +done + +if [ $prep -ne 0 ]; then + test -s Makefile && make clean + CFLAGS="-O0" ./configure || exit 1 # -O0 is suggested by vg. + make || exit 1 + echo "All fine. You can do now a 'testw -v'" + exit 0 +fi + +if test ! -s $REFGPX; then + echo "GPX reference \"$REFGPX\" doesn't exist!" + exit 1 +fi + +touch $CATALOG + +log_entry "testw started." +echo "Catalog: $CATALOG" >> $LOGFILE + +CAPS=`${PNAME} -^2 | grep "^file"` +STAGE_0 -- 2.30.2